package main

import (
	"fmt"
	"net"
	"net/rpc"
)

type Goods struct {
}

type AddGoodsReq struct {
	Id      int
	Title   string
	Price   float32
	Content string
}

type AddGoodsRes struct {
	Success bool
	Message string
}

func (this Goods) AddGoods(req AddGoodsReq, res *AddGoodsRes) error {
	fmt.Println(req)
	fmt.Printf("%#v", req)

	*res = AddGoodsRes{
		Success: true,
		Message: "添加成",
	}
	return nil
}

func main() {

	// 1.注册RPC服务
	err := rpc.RegisterName("goods", new(Goods))
	if err != nil {
		fmt.Println(err)
	}
	// 2.监听端口
	listener, err := net.Listen("tcp", "127.0.0.1:9001")
	if err != nil {
		fmt.Println(err)
	}
	// 3.应用退出关闭监听端口
	defer listener.Close()

	for {
		// 4.建立连接
		fmt.Println("开始建立连接")
		conn, err := listener.Accept()
		if err != nil {
			fmt.Println(err)
			return
		}
		fmt.Println("连接建立成功")
		// 5.绑定服务
		rpc.ServeConn(conn)
		fmt.Println("绑定服务成功")
	}
}
